Dec 2019

Pourquoi faire le choix de réaliser ses graphiques sous R ?

Visualiser ses données avec R

  • Les 4 systèmes graphiques en R

  • Quelle stratégie adopter pour représenter mes données ?

Ce que nous allons faire

  • Détailler les
    logiques de synthaxe
  • Détailler les
    options de personnalisation
  • Stratégie de mise en oeuvre rapide

Ce que nous n’aborderons pas

  • Cartographie

  • Construction de graphiques animés

  • Construction d’applications

Comment être efficace - construire mon graphique

Comment être efficace - construire mon graphique

Nous allons aborder la réalisation de graphique en 4 étapes :

  1. Connaître les 4 systèmes graphiques

  2. Les options de personnalisations

  3. Les règles sémiologie graphique / bonnes pratiques

  4. Utiliser des outils d’autres disciplines pour être plus efficace

Visualiser mes données

Visualiser mes données

Les 4 systèmes graphiques sous R

Les 4 systèmes graphiques

  • Base graphics : le plus simple à apprendre
  • Grid graphics : ensemble de modules puissants pour construire d’autres outils
  • Lattice graphics : système à caractère général basé sur Grid. logique trellis graphics (Cleveland)
  • ggplot2 : basé sur “grammar of graphics”

Base graphics

Le plus simple à manipuler

En phase d’exploration

graphics::plot(ChickWeight)

Le plus simple à manipuler

En phase d’exploration

graphics::plot(ChickWeight$weight)

Sunflowerplot

Autres graphiques de base

  • boxplot
  • mosaic plot

Logique de construction

Les graphiques R de base peuvent être construits grâce à deux types de fonctions :

  • fonctions de haut niveau
    • exemple :plot()
  • fonctions de bas niveau
    • pour ajouter des caractéristiques au graphique
    • lines()
    • text()
    • points()

La fonction par()

  • Utilisée pour le facettage
par(mfrow = c(1,2))

Affichage :

  • 1 ligne
  • 2 colonnes

La fonction par()

par(mfrow = c(2, 3))

Des graphiques avancés

Grid graphics

Grid graphics

Le package lattice

Le package lattice

Basé sur “Trellis graphics” (Cleveland)

Les packages basé sur chaque système

source : Datacamp

Le package lattice

But le plus important du package

  • Réaliser des packages conditionnels
    • efficace pour détecter les sources de variabilité d’un phénomène
    • Comparaison entre différent sous-groupe de données

Le package lattice

" - use high-level functions such as histogram(), xyplot()
- optional arguments for common variants
- But it’s not possible to anticipate all variants
- Need some system to design next visualizations

"

Deepayan Sarkar

Les arguments des fonctions de lattice

  • Obligatoires
    • ~ x : premier argument
    • data : le dataset qui contient les variables
  • Optionnels
    • certains sont communs à toutes les fonctions
    • certains sont spécifiques à certaines fonctions

package lattice

On retrouve les graphiques usuels de Base

histogram( ~ wt, data = mtcars)

(nb : percent et pas freq)

“trellis” object

Le package permet de créer des objets qui pourront être appelés.

tplot <- densityplot(~rate.male + rate.female,
                     data = USCancerRates, outer = T)

class(tplot)
## [1] "trellis"

“trellis” object

tplot <- densityplot(~rate.male + rate.female | state,
                     data = USCancerRates, outer = T)
head(summary(tplot)[[2]])
##             
## state        rate.male rate.female
##   Alabama           67          67
##   Alaska            20          20
##   Arizona           15          15
##   Arkansas          75          75
##   California        57          57
##   Colorado          56          56

“trellis” object

Il faut voir cet objet comme un array

tplot <- densityplot(~rate.male + rate.female | state,
                     data = USCancerRates, outer = T)
dim(tplot)
## [1] 49  2

“trellis” object

On peut ensuite mettre à jour un argument grâce à la fonction update()

Fonction panel

Pour réliser des visualisations, pas possible d’anticiper toutes les variantes. Par exemple, histogramme + kernel density en même temps

avec le package base

data(USCancerRates, package = "latticeExtra")
log.r.m <- log(USCancerRates$rate.male)
hist(log.r.m, freq = F)
lines(density(log.r.m,na.rm = T), col = "green")

avec le package lattice

Il faut créer une fonction panel

panel.histdens <- function(x, ...){
  panel.histogram(...)
  panel.lines(density(x,na.rm = T))
}

avec le package lattice

panel.histdens <- function(x, ...){
  panel.histogram(x,...)
  panel.lines(density(x,na.rm = T))
}

histogram(~rate.female + rate.male, USCancerRates,
          type = "density", layout = c(1,2),
          panel = panel.histdens)

Le package ggplot2

Le package ggplot2

Pourquoi il est intéressant de connaître la synthaxe de ce package ?



  • basé sur “the grammar of graphics”
  • écosystème riche : beaucoup de packages reprennent la logique de ggplot2
  • un package du tidyverse

Grammar of graphics

Grammar of graphics

“The Grammar of Graphics”" de Leland Wilkinson a eu une influence importante sur la façon de penser les graphes





2 principes


  • Graphique = différentes couches d’éléments grammaticaux
  • Des graphiques signifiants respectant des règles mathématiques et esthétiques

Le package ggplot2

  • Le package ggplot2 permet la réalisation de graphiques directement à partir d’un fichier détail, d’un fichier détail pondéré, ou de données agrégées
    • On initialise un graphique
    • On y ajoute des calques

Eléments essentiels de la grammaire

Tous les éléments de la grammaire

…on peut y ajouter d’autres couches

  • scales : l’échelle des axes (linéaire, logarithmique, à l’envers), les couleurs de remplissage
  • ggtitle(" ") : ajoute un titre principal au graphique
  • xlab(" ") : change le libellé des abscisses
  • ylab(" ") : change le libellé des ordonnées
  • labs( title = " “, x =” “, y =” ") : modifie titre principal, libellé des abscisses, libellé des ordonnées en une seule fonction
  • etc.

Comment je construis mon graphique avec ggplot2 ?

  1. J’initialise mon graphique
    • Deux fonctions pour le faire : qplot() et ggplot()
  2. Chaque élément s’ajoute à un autre par le symbole +

Comment je construis mon graphique avec ggplot2 ?

library(ggplot2)
ggplot(data = mtcars)+
  geom_point(mapping = aes(x = mpg, y = hp))

Une solution clique-bouton

Un package helper : corrplot

library(corrplot)
correlation <- cor(mtcars)
# Fonction du package corrplot
corrplot(correlation,method = "ellipse")

Règles de datavisualisation

Avoir les bons réflexes

  1. Une communauté riche
    • ROpenSci
    • Communauté Slack Grrr
    • Ressources en français : frrrenchies
    • etc.
  2. Regarder ce que font d’autres acteurs de la visualisation de la donnée
    • UI/UX design
    • Webdesign
    • Cartographie / géomatique
    • etc.

Des sites pour se souvenir des bonnes pratiques

Des graphiques interactifs : une introduction

Le package plotly

Le package plotly

library(dplyr)
mtcars %>% 
  ggplot(aes(x = mpg, y = disp, color = factor(cyl))) +   geom_point() 

Le package plotly

Autre package d’intéractivité facile à prendre en main

Les différents types de graphiques

  • statiques
  • interactifs
  • dynamiques / animés

Trouver rapidement des outils de personnalisation

Outils pour gérer la couleur

Récapitulatif

2 approches standards

  • Déclaratives
    • On fournit un ensemble de spécifications
    • Le système décide comment respecter au mieux ces demandes
    • C’est l’approche utilisée par ggplot2
  • Procéral ou algorithmique
    • On fournit un ensemble d’instructions
    • Elles sont exécutés de manière séquentielle
    • C’est l’approche base R graphics et lattice

Exemples de dataviz